package command;

import memento.Memento;
import invoker.IIHM;
import receiver.Enregistreur;
import receiver.ME;

public class SaisirTexte implements Command {

	/**
	 * Construit une commande concrete EffacerTexte
	 * @param moteur : le moteur d'edition
	 */
	ME moteur;
	IIHM ihm;
	String texte;
	
	/**
	 * Constuit une commande concrete SaisirTexte
	 * @param moteur le moteur d'edition
	 * @param ihm l'ihm
	 */
	public SaisirTexte (ME moteur,IIHM ihm){
			this.moteur = moteur;
			this.ihm = ihm;
		}
	
	@Override
	public void executer() {
		// on recupere le texte
		texte = ihm.getTexte();
		moteur.saisirTexte(texte);
		
		if (Enregistreur.getInstance().isEnMarche())
			Enregistreur.getInstance().enregistrer(this);
	}
	
	@Override
	public void rejouer() {
		moteur.saisirTexte(texte);
	}
	
	//application du design pattern Memento
	public class MementoSaisirTexte implements Memento{
		private String texte;
		
		private MementoSaisirTexte(String texte){
			this.texte = texte;
		}

		public String getTexte() {
			return texte;
		}

		public void setTexte(String texte) {
			this.texte = texte;
		}
	
	}
	
	public Memento getMemento (){
		return new MementoSaisirTexte(texte);
	}
	
	public void setMemento(Memento m){
		texte = ((MementoSaisirTexte)m).getTexte();
	}

}
